package service;

import java.util.List;

import model.Aluno;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;

import dao.AlunoDao;
import exception.ConexaoException;

@Service
public class AlunoServico {
	private  final AlunoDao dao;
	private ModelAndView model;
	@Autowired
	public AlunoServico(AlunoDao dao, ModelAndView model){
		this.dao = dao;
		System.out.println("aaaaaaaaaaaaa Chegou no AlunoServico");
	}
	
	public ModelAndView listar(){
		model.setViewName("aluno/listar");
		try {
			List<Aluno> lista = dao.listar();
			model.addObject("lista",lista);
			dao.commit();
		} catch (ConexaoException e) {
			model.addObject("msg", e.getMessage());
			dao.rollback();
		}
		return model;
	}
	
	public ModelAndView persistir(Aluno aluno){
		String acao = (aluno.getId() == 0) ? "cadastrado(a)" : "atualizado(a)";//Verificando se o JPA vai Cadastrar ou Editar
		String msg = "'"+aluno.getNome() + "' foi "+ acao + " com sucesso!";//Mensagem de sucesso!
		String pagina = "";
		try {
			dao.persistir(aluno);
			dao.commit();
			pagina = listar().getViewName();
		} catch (ConexaoException e) {
			msg = e.getMessage();
			pagina = "aluno/cadastro";
			dao.rollback();
		}
		model.addObject("msg",msg);
		model.setViewName(pagina);
		return model;
	}
	
	public ModelAndView editar(long id){
		String pagina = "";
		//model.addObject("msg",null);
		try {
			Aluno aluno = dao.localizar(id);
			dao.commit();
			pagina = "aluno/cadastro";
			model.addObject("aluno",aluno);
		} catch (ConexaoException e) {
			dao.rollback();
			model.addObject("msg",e.getMessage());
			pagina = listar().getViewName();
		}
		model.setViewName(pagina);
		return model;
	}
	
	public ModelAndView excluir(long id){
		String msg = "";
		try {
			Aluno aluno = dao.localizar(id);
			if(aluno == null){
				msg = "Nenhum aluno cadastrado com o ID: " + id +"!";
			}else{
				dao.excluir(id);
				msg = "'" +aluno.getNome()+ "' foi excluido(a) com sucesso!";
			}
			dao.commit();
		} catch (ConexaoException e) {
			msg = e.getMessage();
		}
		model.setViewName(listar().getViewName());
		return model;
	}
	public ModelAndView novo(){
		model.setViewName("aluno/cadastro");
		return model;
	}
}
